package com.shujia.day08.homework;

/*
    3.某公司要开发新游戏，请用面向对象的思想，设计游戏中的蛇怪和蜈蚣精  设定
    1)蛇怪类:
        属性包括：怪物名字，生命值，攻击力
        方法包括：攻击，移动（曲线移动），补血（当生命值<10 时，可以补加 20 生命值）
    2)蜈蚣精类：
        属性包括：怪物名字，生命值，攻击力
        方法包括：攻击，移动（飞行移动）
      要求
        1)分析蛇怪和蜈蚣精的公共成员，提取出父类—怪物类
        2)利用继承机制，实现蛇怪类和蜈蚣精类
        3)攻击方法，描述攻击状态。内容包括怪物名字，生命值，攻击力
        4)编写测试类，分别测试蛇怪和蜈蚣精的对象及相关方法
    定义名为 mon 的包存怪物类，蛇怪类，蜈蚣精类和测试类
 */
class Monster {
    private String name;
    private int hp;
    private int attack;

    public Monster() {
    }

    public Monster(String name, int hp, int attack) {
        this.name = name;
        this.hp = hp;
        this.attack = attack;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public int getHp() {
        return hp;
    }

    public void setHp(int hp) {
        this.hp = hp;
    }

    public int getAttack() {
        return attack;
    }

    public void setAttack(int attack) {
        this.attack = attack;
    }

    public void hit() {
        System.out.println("攻击");
    }

    public void move() {
        System.out.println("移动");
    }
}

class Snake extends Monster {
    public Snake() {
    }

    public Snake(String name, int hp, int attack) {
        super(name, hp, attack);
    }

    @Override
    public void hit() {
        System.out.println("怪物" + getName() + "展开攻击");
    }

    @Override
    public void move() {
        System.out.println("我是蛇怪，我走S型路线");
    }

    public void plusBlood() {
        //补血（当生命值<10 时，可以补加 20 生命值）
        if (getHp() < 10) {
            setHp(getHp() + 20);
        }
        System.out.println("实施大蛇补血术。。。。。，当前生命值是：" + getHp());
    }

    public void show() {
        hit();
        System.out.println("当前生命值是:" + getHp());
        System.out.println("攻击力是:" + getAttack());
        plusBlood();
        move();
    }
}

class Centipede extends Monster {
    public Centipede() {
    }

    public Centipede(String name, int hp, int attack) {
        super(name, hp, attack);
    }

    @Override
    public void hit() {
        System.out.println("怪物" + getName() + "展开攻击");
    }

    @Override
    public void move() {
        System.out.println("我是蜈蚣精，御风飞行");
    }

    public void show() {
        hit();
        System.out.println("当前生命值是:" + getHp());
        System.out.println("攻击力是:" + getAttack());
        move();
    }
}


public class Test5 {
    public static void main(String[] args) {
        //创建一个蛇妖
        Snake s1 = new Snake("蛇妖甲", 5, 20);
        s1.show();
        System.out.println("==============================");
        //创建一个蜈蚣精
        Centipede c1 = new Centipede("蜈蚣乙", 60, 15);
        c1.show();
    }
}
